题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
思路
- 其实这道题就是要考虑周全就行,首先是字符串的鉴别啊,“+”和“-”的判别,然后我就写多了。。。。
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849static public int StrToInt(String str) {if (str==null||str.length()==0) //null和空字符串检验return 0;char [] a = str.toCharArray(); //消耗点空间呗if (a[a.length-1]<'0'||a[a.length-1]>'9') //检查最后一个字符是否不是数字return 0;boolean flag = true; //加法还是减法int number=0; //假发或者减法第二项int result = 0; //结果for (int i = 0; i < a.length;i++) { //写的难看的for循环while (a[i]!='+'&&a[i]!='-') { //计算第二项if (a[i]>'9'||((a[i]<'0')&&(a[i]!='+'||a[i]!='-')))//检测return 0;number = number * 10 + a[i] - '0';i++;if (i>a.length-1)break;}if (i>=a.length-1) //到尾了{if (flag) //flag用于判断前一个符号是+还是-result += number;else if (flag==false)result-=number;break;}if (i<a.length&&a[i]=='+'){if (flag)result += number;else if (flag==false)result-=number;flag = true;number = 0;}if (i<a.length&&a[i]=='-'){if (flag)result += number;else if (flag==false)result-=number;flag = false;number = 0;}}return result;}
收获
- 永远不要小看题目
- 永远不要小看面试官,人家比你溜得多;